//
// Created by hjie on 23-6-23.
//

#pragma once

#include <string>
#include <memory>
#include <functional>
#include <map>
#include "base_logic_module.h"
#include <rapidjson/document.h>

class RoomReferenceData;

class UserInOutModule : public BaseLogicModule
{
public:
    UserInOutModule(const std::string & module_name);
    ~UserInOutModule();
    virtual void RegisterMsg(MessageRouter * router);
public:
    void UserIn(RoomReferenceData * data,  std::shared_ptr<BaseProtocol> & request);
    void UserOut(RoomReferenceData * data, std::shared_ptr<BaseProtocol> & request);
public:
    std::shared_ptr<BaseProtocol> CreateProtocolData(const std::string & msg, rapidjson::Document & input);
};
